﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace C_初级教程
{
    /// <summary>
    /// 单例设计模式
    /// 单例： 在程序只会存在一个本类的实例对象，这样提高性能
    /// 当一个对象是共用的，那就是用单例模式
    /// 单例模式的核心：将本类的对象作为类的静态属性输出，实例构造函数设置成private阻止其他人实例化，静态构造函数实例化本类形成对象
    /// </summary>
    internal class MyDbcontext
    {


        //实例属性
        public string UserName { get; set; }
        public string Pwd { get; set; }

        //静态字段
        private static MyDbcontext dbcontext = null;//先声明一个本类的实例字段

        //静态属性访问字段
        //暴露一个出口
        public static MyDbcontext Instance
        {
            get { return dbcontext; }
        }

        /// <summary>
        /// 实例构造函数
        /// 通过将实例构造函数设置为 private 来阻止别人进行实例化(从外部不能调用构造函数)
        /// </summary>
        private MyDbcontext()//因为用了private所以阻止了别人进行实例化
        { 
        
        }

        /// <summary>
        /// 静态构造函数，(利用其只执行一次的特点来实现)
        /// </summary>
        static MyDbcontext()
        {
            dbcontext = new MyDbcontext();//在静态构造函数中先给实例化
        }
    }

    public class useSIngle
    {
        public void use()
        {
            MyDbcontext dbcontext = MyDbcontext.Instance;
        }
    }
}
